package particle;

import java.util.ArrayList;

import processing.core.*;

public class ParticleSystem {

	ArrayList particles; // An arraylist for all the particles
	PVector origin; // An origin point for where particles are born

	public ParticleSystem(int num, PVector v) {
		particles = new ArrayList(); // Initialize the arraylist
		origin = v.get(); // Store the origin point
		for (int i = 0; i < num; i++) {
			particles.add(new Particle(origin)); // Add "num" amount of
													// particles to the
													// arraylist
		}
	}

	public void run(PApplet pa) {
		// Cycle through the ArrayList backwards b/c we are deleting
		for (int i = particles.size() - 1; i >= 0; i--) {
			Particle p = (Particle) particles.get(i);
			p.run(pa);
			if (p.dead()) {
				particles.remove(i);
			}
		}
	}

	void addParticle() {
			particles.add(new Particle(origin));
	  }

	public void addParticle(float x, float y) {		
			particles.add(new Particle(new PVector(x, y)));
	}

	void addParticle(Particle p) {
		particles.add(p);
	}

	// A method to test if the particle system still has particles
	boolean dead() {
		if (particles.isEmpty()) {
			return true;
		} else {
			return false;
		}
	}

}